คู่มือฉบับสมบูรณ์สำหรับการตั้งค่าสภาพแวดล้อมเสมือน Python โดยใช้ virtualenv และ venv เพื่อให้มั่นใจว่าโปรเจกต์จะแยกจากกันและการจัดการการพึ่งพาสำหรับนักพัฒนาทั่วโลก
การตั้งค่า Python Virtualenv: การสร้างสภาพแวดล้อมที่แยกจากกัน
ในโลกของการพัฒนา Python การจัดการการพึ่งพาและทำให้มั่นใจว่าโปรเจกต์แยกจากกันเป็นสิ่งสำคัญสำหรับการสร้างแอปพลิเคชันที่แข็งแกร่งและบำรุงรักษาได้ วิธีที่มีประสิทธิภาพที่สุดวิธีหนึ่งในการทำเช่นนี้คือการใช้สภาพแวดล้อมเสมือน สภาพแวดล้อมเสมือนเป็นไดเรกทอรีแบบแยกส่วนที่เก็บตัวแปล Python เฉพาะพร้อมกับแพ็คเกจที่ติดตั้งไว้ สิ่งนี้ช่วยให้คุณทำงานหลายโครงการพร้อมกันได้ โดยแต่ละโครงการมีชุดการพึ่งพาของตัวเองโดยเฉพาะ โดยไม่มีความขัดแย้งเกิดขึ้นจากเวอร์ชันแพ็คเกจที่แตกต่างกัน
ทำไมต้องใช้สภาพแวดล้อมเสมือน?
ลองพิจารณาสถานการณ์ที่คุณกำลังทำงานในโครงการ Python สองโครงการ โครงการ A ต้องการไลบรารีเวอร์ชัน 1.0 ในขณะที่โครงการ B ต้องการไลบรารีเวอร์ชัน 2.0 หากไม่มีสภาพแวดล้อมเสมือน การติดตั้งไลบรารีทั่วโลกมีแนวโน้มที่จะทำให้เกิดปัญหาด้านความเข้ากันได้สำหรับหนึ่งในโครงการ สภาพแวดล้อมเสมือนแก้ปัญหานี้โดยการจัดหาสpace ที่แยกต่างหากสำหรับแต่ละโครงการให้มีชุดแพ็คเกจของตัวเอง
นี่คือประโยชน์หลักบางประการของการใช้สภาพแวดล้อมเสมือน:
- การแยกการพึ่งพา: แต่ละโครงการมีชุดการพึ่งพาของตัวเอง ป้องกันความขัดแย้ง
- การจัดการเวอร์ชัน: จัดการเวอร์ชันที่แตกต่างกันของแพ็คเกจสำหรับโครงการต่างๆ ได้อย่างง่ายดาย
- การทำซ้ำโครงการ: ตรวจสอบให้แน่ใจว่าโครงการของคุณสามารถทำซ้ำได้ง่ายบนเครื่องจักรต่างๆ ด้วยการพึ่งพาเดียวกัน
- สภาพแวดล้อมส่วนกลางที่สะอาด: ทำให้การติดตั้ง Python ส่วนกลางของคุณสะอาดและไม่เกะกะ
การตั้งค่าสภาพแวดล้อมเสมือน: virtualenv และ venv
มีเครื่องมือหลักสองอย่างสำหรับการสร้างสภาพแวดล้อมเสมือนใน Python: virtualenv
และ venv
virtualenv
เป็นแพ็คเกจของบุคคลที่สามที่มีมานานแล้วและมีคุณสมบัติมากมาย venv
เป็นโมดูลในตัวใน Python 3.3 และใหม่กว่า ซึ่งเป็นทางเลือกที่เบากว่าสำหรับ virtualenv
เครื่องมือทั้งสองบรรลุเป้าหมายเดียวกัน: การสร้างสภาพแวดล้อม Python ที่แยกจากกัน
การใช้ virtualenv
virtualenv
เป็นเครื่องมือยอดนิยมและใช้กันอย่างแพร่หลายสำหรับการสร้างสภาพแวดล้อมเสมือน นี่คือวิธีใช้งาน:
การติดตั้ง
ขั้นแรก คุณต้องติดตั้ง virtualenv
คุณสามารถทำได้โดยใช้ pip:
pip install virtualenv
การสร้างสภาพแวดล้อมเสมือน
เมื่อติดตั้ง virtualenv
แล้ว คุณสามารถสร้างสภาพแวดล้อมเสมือนในไดเรกทอรีโปรเจกต์ของคุณได้ ไปที่ไดเรกทอรีโปรเจกต์ของคุณในเทอร์มินัลและเรียกใช้คำสั่งต่อไปนี้:
virtualenv myenv
คำสั่งนี้สร้างไดเรกทอรีใหม่ชื่อ myenv
(คุณสามารถเลือกชื่ออะไรก็ได้ที่คุณต้องการ) ซึ่งมีสภาพแวดล้อมเสมือน ไดเรกทอรี myenv
จะมีไดเรกทอรี่ย่อยดังต่อไปนี้:
bin
: มีไฟล์ปฏิบัติการ Python และสคริปต์เปิดใช้งานinclude
: มีส่วนหัว C สำหรับการรวบรวมส่วนขยาย Pythonlib
: มีไดเรกทอรี site-packages ซึ่งแพ็คเกจที่ติดตั้งจะอยู่ใน
การเปิดใช้งานสภาพแวดล้อมเสมือน
หากต้องการใช้สภาพแวดล้อมเสมือน คุณต้องเปิดใช้งาน ซึ่งจะปรับเปลี่ยนตัวแปรสภาพแวดล้อมของเชลล์ของคุณเพื่อใช้ตัวแปล Python และแพ็คเกจภายในสภาพแวดล้อมเสมือน
บน Linux/macOS ให้ใช้คำสั่งต่อไปนี้:
source myenv/bin/activate
บน Windows ให้ใช้คำสั่งต่อไปนี้:
myenv\Scripts\activate
หลังจากเปิดใช้งาน คุณจะสังเกตเห็นว่าพรอมต์เทอร์มินัลของคุณเปลี่ยนไปเพื่อระบุสภาพแวดล้อมเสมือนที่ใช้งานอยู่ (เช่น (myenv) $
) ตอนนี้ แพ็คเกจใดๆ ที่คุณติดตั้งโดยใช้ pip จะถูกติดตั้งภายในสภาพแวดล้อมเสมือนและจะไม่ส่งผลกระทบต่อการติดตั้ง Python ทั่วไปของคุณหรือสภาพแวดล้อมเสมือนอื่นๆ
การปิดใช้งานสภาพแวดล้อมเสมือน
เมื่อคุณทำงานในโครงการเสร็จแล้ว คุณสามารถปิดใช้งานสภาพแวดล้อมเสมือนได้โดยเรียกใช้คำสั่งต่อไปนี้:
deactivate
ซึ่งจะส่งพรอมต์เทอร์มินัลของคุณกลับสู่สถานะปกติและกลับไปใช้การติดตั้ง Python ทั่วไปของคุณ
การใช้ venv
venv
เป็นโมดูลในตัวใน Python 3.3 และใหม่กว่า ซึ่งเป็นทางเลือกที่เบากว่าสำหรับ virtualenv
โดยทั่วไปขอแนะนำให้ใช้ venv
หากคุณใช้ Python เวอร์ชันที่มี
การสร้างสภาพแวดล้อมเสมือน
ในการสร้างสภาพแวดล้อมเสมือนโดยใช้ venv
ให้ไปที่ไดเรกทอรีโปรเจกต์ของคุณในเทอร์มินัลและเรียกใช้คำสั่งต่อไปนี้:
python3 -m venv myenv
คำสั่งนี้สร้างไดเรกทอรีใหม่ชื่อ myenv
(หรือชื่อใดก็ได้ที่คุณเลือก) ซึ่งมีสภาพแวดล้อมเสมือนคล้ายกับ virtualenv
การเปิดใช้งานสภาพแวดล้อมเสมือน
กระบวนการเปิดใช้งานสำหรับ venv
นั้นเหมือนกับ virtualenv
บน Linux/macOS ให้ใช้คำสั่งต่อไปนี้:
source myenv/bin/activate
บน Windows ให้ใช้คำสั่งต่อไปนี้:
myenv\Scripts\activate
หลังจากเปิดใช้งาน พรอมต์เทอร์มินัลของคุณจะระบุสภาพแวดล้อมเสมือนที่ใช้งานอยู่ และแพ็คเกจใดๆ ที่คุณติดตั้งจะถูกแยกภายในสภาพแวดล้อม
การปิดใช้งานสภาพแวดล้อมเสมือน
การปิดใช้งานสภาพแวดล้อม venv
ก็เหมือนกับ virtualenv
เช่นกัน:
deactivate
การจัดการการพึ่งพาด้วย pip
เมื่อคุณเปิดใช้งานสภาพแวดล้อมเสมือนแล้ว คุณสามารถใช้ pip เพื่อติดตั้ง อัปเกรด และถอนการติดตั้งแพ็คเกจได้ นี่คือคำสั่ง pip ทั่วไป:
- ติดตั้งแพ็คเกจ:
pip install package_name
(เช่นpip install requests
) - ติดตั้งแพ็คเกจเวอร์ชันเฉพาะ:
pip install package_name==version
(เช่นpip install requests==2.26.0
) - อัปเกรดแพ็คเกจ:
pip install --upgrade package_name
(เช่นpip install --upgrade requests
) - ถอนการติดตั้งแพ็คเกจ:
pip uninstall package_name
(เช่นpip uninstall requests
) - รายการแพ็คเกจที่ติดตั้ง:
pip list
หรือpip freeze
การสร้างไฟล์ข้อกำหนด
เพื่อให้แน่ใจว่าการพึ่งพาของโปรเจกต์ของคุณสามารถทำซ้ำได้ง่ายบนเครื่องจักรอื่นๆ เป็นแนวทางปฏิบัติที่ดีที่สุดในการสร้างไฟล์ requirements.txt
ไฟล์นี้แสดงรายการแพ็คเกจทั้งหมดและเวอร์ชันที่ติดตั้งในสภาพแวดล้อมเสมือนของคุณ
ในการสร้างไฟล์ requirements.txt
ให้เปิดใช้งานสภาพแวดล้อมเสมือนของคุณและเรียกใช้คำสั่งต่อไปนี้:
pip freeze > requirements.txt
ซึ่งจะสร้างไฟล์ชื่อ requirements.txt
ในไดเรกทอรีโปรเจกต์ของคุณ จากนั้นคุณสามารถรวมไฟล์นี้ไว้ในระบบควบคุมเวอร์ชันของโปรเจกต์ของคุณ (เช่น Git) เพื่อให้ผู้อื่นสามารถติดตั้งการพึ่งพาเดียวกันได้อย่างง่ายดาย
การติดตั้งจากไฟล์ข้อกำหนด
ในการติดตั้งการพึ่งพาที่แสดงรายการในไฟล์ requirements.txt
ให้เปิดใช้งานสภาพแวดล้อมเสมือนของคุณและเรียกใช้คำสั่งต่อไปนี้:
pip install -r requirements.txt
ซึ่งจะติดตั้งแพ็คเกจทั้งหมดและเวอร์ชันที่ระบุจากไฟล์ requirements.txt
แนวทางปฏิบัติที่ดีที่สุดสำหรับการใช้สภาพแวดล้อมเสมือน
นี่คือแนวทางปฏิบัติที่ดีที่สุดบางประการที่ควรปฏิบัติตามเมื่อใช้สภาพแวดล้อมเสมือน:
- สร้างสภาพแวดล้อมเสมือนสำหรับแต่ละโปรเจกต์: ซึ่งจะทำให้มั่นใจได้ว่าแต่ละโปรเจกต์มีชุดการพึ่งพาของตัวเองที่แยกจากกัน
- รักษาไฟล์ข้อกำหนดของคุณให้เป็นปัจจุบันอยู่เสมอ: อัปเดตไฟล์
requirements.txt
ของคุณเป็นประจำเพื่อสะท้อนการพึ่งพาในปัจจุบันของโปรเจกต์ของคุณ - ใช้การควบคุมเวอร์ชัน: รวมไดเรกทอรีสภาพแวดล้อมเสมือนของคุณในไฟล์
.gitignore
ของโปรเจกต์ของคุณเพื่อป้องกันไม่ให้ถูกส่งไปยังการควบคุมเวอร์ชัน ส่งเฉพาะไฟล์requirements.txt
เท่านั้น - ตั้งชื่อสภาพแวดล้อมเสมือนของคุณอย่างสอดคล้องกัน: ใช้แบบแผนการตั้งชื่อที่สอดคล้องกันสำหรับสภาพแวดล้อมเสมือนของคุณเพื่อหลีกเลี่ยงความสับสน ตัวอย่างเช่น คุณสามารถตั้งชื่อว่า
.venv
หรือvenv
- ใช้ตัวจัดการสภาพแวดล้อมเสมือน: พิจารณาใช้ตัวจัดการสภาพแวดล้อมเสมือน เช่น
virtualenvwrapper
หรือconda
เพื่อทำให้การจัดการสภาพแวดล้อมเสมือนหลายรายการง่ายขึ้น
ตัวจัดการสภาพแวดล้อมเสมือน
ในขณะที่ virtualenv
และ venv
เป็นเครื่องมือที่ยอดเยี่ยมสำหรับการสร้างสภาพแวดล้อมเสมือน อาจกลายเป็นเรื่องยุ่งยากในการจัดการเมื่อทำงานกับหลายโครงการ ตัวจัดการสภาพแวดล้อมเสมือนมีคุณสมบัติเพิ่มเติมและความสะดวกสบายในการจัดการสภาพแวดล้อมเสมือน
virtualenvwrapper
virtualenvwrapper
คือชุดส่วนขยายสำหรับ virtualenv
ซึ่งทำให้ง่ายต่อการสร้าง จัดการ และทำงานกับสภาพแวดล้อมเสมือน มีคำสั่งสำหรับการสร้าง เปิดใช้งาน ปิดใช้งาน และลบสภาพแวดล้อมเสมือน รวมถึงการแสดงรายการสภาพแวดล้อมที่มีอยู่
หากต้องการติดตั้ง virtualenvwrapper
ให้ใช้ pip:
pip install virtualenvwrapper
การตั้งค่าและการใช้งาน virtualenvwrapper
แตกต่างกันไปขึ้นอยู่กับระบบปฏิบัติการของคุณ อ้างถึงเอกสารประกอบ virtualenvwrapper
สำหรับคำแนะนำโดยละเอียด
conda
conda
คือระบบการจัดการแพ็คเกจ การพึ่งพา และสภาพแวดล้อมแบบโอเพนซอร์ส มักใช้ในด้านวิทยาศาสตร์ข้อมูลและการคำนวณทางวิทยาศาสตร์ แต่ก็สามารถใช้สำหรับการพัฒนา Python ทั่วไปได้เช่นกัน conda
ช่วยให้คุณสามารถสร้างและจัดการสภาพแวดล้อมเสมือน รวมถึงติดตั้งและจัดการแพ็คเกจได้
ในการติดตั้ง conda
ให้ดาวน์โหลดและติดตั้ง Anaconda หรือ Miniconda จากเว็บไซต์ Anaconda
ในการสร้างสภาพแวดล้อม conda ใหม่ ให้ใช้คำสั่งต่อไปนี้:
conda create --name myenv python=3.9
ในการเปิดใช้งานสภาพแวดล้อม:
conda activate myenv
ในการปิดใช้งานสภาพแวดล้อม:
conda deactivate
Conda มีชุดเครื่องมือที่ครอบคลุมสำหรับการจัดการการพึ่งพาและสภาพแวดล้อม ทำให้เป็นตัวเลือกยอดนิยมสำหรับโปรเจกต์ที่ซับซ้อน
ข้อควรพิจารณาทั่วไปและแนวทางปฏิบัติที่ดีที่สุด
เมื่อทำงานในทีมระดับโลกหรือปรับใช้แอปพลิเคชันในภูมิภาคต่างๆ ให้พิจารณาปัจจัยเหล่านี้:
- Python Versions ที่สอดคล้องกัน: ตรวจสอบให้แน่ใจว่าสมาชิกในทีมทุกคนใช้ Python เวอร์ชันเดียวกันสำหรับการพัฒนา ซึ่งจะช่วยป้องกันปัญหาความเข้ากันไม่ได้ที่ไม่คาดคิดระหว่างการผสานรวมและการปรับใช้ ตัวอย่างเช่น ทีมพัฒนาในโตเกียว ประเทศญี่ปุ่น และอีกทีมในลอนดอน ประเทศอังกฤษ ควรกำหนด Python เวอร์ชันเดียวร่วมกัน
- สภาพแวดล้อมมาตรฐาน: ใช้เครื่องมือต่างๆ เช่น Docker หรือ Vagrant ควบคู่ไปกับสภาพแวดล้อมเสมือนเพื่อสร้างสภาพแวดล้อมการพัฒนาและการปรับใช้ที่สอดคล้องกันในระบบปฏิบัติการและโครงสร้างพื้นฐานต่างๆ ซึ่งรับประกันว่าแอปพลิเคชันของคุณจะทำงานตามที่คาดไว้โดยไม่คำนึงถึงระบบพื้นฐาน ลองนึกภาพการปรับใช้แอปพลิเคชันที่พัฒนาบน macOS ไปยังเซิร์ฟเวอร์ Linux การใช้ Docker ช่วยให้มั่นใจได้ถึงพฤติกรรมที่สอดคล้องกัน
- การกำหนด Pinning การพึ่งพา: ใช้หมายเลขเวอร์ชันที่แม่นยำในไฟล์ `requirements.txt` ของคุณ ซึ่งจะทำให้มั่นใจได้ว่าทุกคนใช้การพึ่งพาในเวอร์ชันเดียวกันทุกประการ ลดข้อผิดพลาดที่อาจเกิดจากไลบรารีเวอร์ชันที่แตกต่างกัน แทนที่จะเป็น `requests>=2.0` ให้ใช้ `requests==2.28.1`
- ความเข้ากันได้ข้ามแพลตฟอร์ม: ทดสอบแอปพลิเคชันของคุณในระบบปฏิบัติการต่างๆ (Windows, macOS, Linux) เพื่อระบุและแก้ไขปัญหาเฉพาะแพลตฟอร์มในช่วงต้นของกระบวนการพัฒนา ท่อ CI/CD บนคลาวด์สามารถทำการทดสอบอัตโนมัติบนแพลตฟอร์มต่างๆ ได้
- เขตเวลา: เมื่อจัดการกับข้อมูลที่ละเอียดอ่อนต่อเวลา ให้ใช้เขตเวลาที่สอดคล้องกัน (เช่น UTC) และจัดการการแปลงเขตเวลาอย่างเหมาะสม หลีกเลี่ยงการพึ่งพาเขตเวลาท้องถิ่น เนื่องจากอาจแตกต่างกันไปในแต่ละภูมิภาค
- การเข้ารหัสอักขระ: ใช้การเข้ารหัส UTF-8 สำหรับไฟล์ข้อความทั้งหมด (รวมถึงซอร์สโค้ดและไฟล์กำหนดค่า) เพื่อให้แน่ใจว่ามีการจัดการอักขระสากลอย่างถูกต้อง
การแก้ไขปัญหาทั่วไป
นี่คือปัญหาทั่วไปที่คุณอาจพบเมื่อทำงานกับสภาพแวดล้อมเสมือนและวิธีแก้ไข:
- ปัญหาการเปิดใช้งาน: หากคุณมีปัญหาในการเปิดใช้งานสภาพแวดล้อมเสมือน ให้ตรวจสอบให้แน่ใจว่าคุณใช้สคริปต์การเปิดใช้งานที่ถูกต้องสำหรับระบบปฏิบัติการและเชลล์ของคุณ ตรวจสอบเส้นทางไปยังสคริปต์การเปิดใช้งานอีกครั้งและตรวจสอบให้แน่ใจว่าสามารถดำเนินการได้
- ปัญหาการติดตั้งแพ็คเกจ: หากคุณมีปัญหาในการติดตั้งแพ็คเกจ ให้ตรวจสอบให้แน่ใจว่าคุณได้เปิดใช้งานสภาพแวดล้อมเสมือนแล้วและคุณใช้ pip เวอร์ชันที่ถูกต้อง คุณอาจต้องอัปเกรด pip เป็นเวอร์ชันล่าสุด
- ความขัดแย้งในการพึ่งพา: หากคุณพบความขัดแย้งในการพึ่งพา ลองใช้
pipdeptree
หรือpip-tools
เพื่อวิเคราะห์การพึ่งพาของคุณและระบุแพ็คเกจที่ขัดแย้งกัน คุณอาจต้องอัปเกรดหรือดาวน์เกรดแพ็คเกจบางรายการเพื่อแก้ไขความขัดแย้ง - สภาพแวดล้อมเสมือนเสียหาย: หากสภาพแวดล้อมเสมือนของคุณเสียหาย คุณสามารถลองลบและสร้างใหม่ตั้งแต่เริ่มต้น
บทสรุป
สภาพแวดล้อมเสมือนเป็นเครื่องมือสำคัญสำหรับนักพัฒนา Python โดยให้การแยกการพึ่งพา การจัดการเวอร์ชัน และการทำซ้ำโครงการ ด้วยการใช้ virtualenv
หรือ venv
คุณสามารถมั่นใจได้ว่าโครงการของคุณแยกจากกันและว่าการติดตั้ง Python ทั่วไปของคุณยังคงสะอาดอยู่ โปรดจำไว้ว่าให้สร้างไฟล์ requirements.txt
สำหรับแต่ละโครงการเพื่ออำนวยความสะดวกในการทำซ้ำการพึ่งพาอย่างง่ายดาย ด้วยการทำตามแนวทางปฏิบัติที่ดีที่สุดที่สรุปไว้ในคู่มือนี้ คุณสามารถปรับปรุงขั้นตอนการทำงานในการพัฒนา Python ของคุณและสร้างแอปพลิเคชันที่แข็งแกร่งและบำรุงรักษาได้มากขึ้น สำหรับการทำงานร่วมกันระดับโลก สภาพแวดล้อมที่ได้มาตรฐานและการจัดการการพึ่งพาอย่างรอบคอบเป็นสิ่งสำคัญยิ่ง